#!/usr/bin/env python
import BeautifulSoup
from PyRSS2Gen import RSSItem, Guid
import ScrapeNFeed
import re
import urllib2
url_base = "http://www.jobrapido.it"
search = "/?w=erp&l=lombardia"
url = url_base + search
from datetime import date
import sys
import pickle
class SavedData:
	def __init__(self, filename):
		self.filename = filename
		try:		
			f = open (filename,'r')
		except:
			self.list = {}
		else:
			self.list = pickle.load(f)
			f.close()
	def Write (self):
		f = open (self.filename,'w')
		pickle.dump(self.list,f)
		f.close()
	def Archive (self, ndays):
		for site in self.list:
			if ( date.today() - self[site][0] ).days > ndays :
				del self[site]
		

#SavedRSS = SavedData('/home/mrivo/public_html/savedrsserp')
SavedRSS = SavedData('/tmp/savedrsserp')

class JobrapidoFeed(ScrapeNFeed.ScrapedFeed):

    def HTML2RSS(self, headers, body):
        soup = BeautifulSoup.BeautifulSoup(body)
        annunci = soup.findAll('a',id=re.compile('SearchResultSlot'))
        items = []
        for annuncio in annunci:
		annuncio_link = unicode(annuncio['href'])
		print annuncio_link
		annuncio_title = annuncio.contents[0]
		if annuncio_link.find("/") == 0:
# cerca il link nella pagina intermedia di jobrapido
			annuncio_link = url_base + annuncio_link
			try:			
				html = urllib2.urlopen(annuncio_link)
			except  (urllib2.URLError , urllib2,ValueError):
				annuncio_link2 = annuncio_link
			else:
				soup_middle = BeautifulSoup.BeautifulSoup(html)
				annuncio_link2 = soup_middle.find('a')
			if annuncio_link2 != None :
			 annuncio_link = unicode (annuncio_link2['href'])
#controllare se annuncio_link registrato
		if (annuncio_link not in SavedRSS.list) :
# da ripristinare per avere il contenuto dell' articolo
#			try:
#				html = urllib2.urlopen(annuncio_link)
#			except (urllib2.URLError , urllib2,ValueError):
#				annuncio_html = 'Impossibile scaricare il sito'
#			else :
#				annuncio_html = BeautifulSoup.BeautifulSoup(html)
			annuncio_html = ' '
## fine : da ripristinare per avere il contenuto dell' articolo

        		items.append(RSSItem(title=unicode(annuncio_title),description=unicode(annuncio_html),link=unicode(annuncio_link)))
			SavedRSS.list[annuncio_link]=date.today()
			print ("salvato"+annuncio_link)
				
        self.addRSSItems(items)
	

#iterazione sulle pagine di jobrapido 
#for suffix in ['','&p=2','&p=3','&p=4','&p=5','&p=6','&p=7'] :
#	JobrapidoFeed.load("Annunci JobRapido",url+suffix,"Tutti gli annunci di jobrapido",'/home/mrivo/public_html/jobrapido.xml','/home/mrivo/public_html/jobrapido.pickle',50)

#JobrapidoFeed.load("Annunci JobRapido",url+sys.argv[1],"Tutti gli annunci di jobrapido erp",'/home/mrivo/public_html/jobrapidoerp.xml','/home/mrivo/public_html/jobrapidoerp.pickle',50)
JobrapidoFeed.load("Annunci JobRapido",url+sys.argv[1],"Tutti gli annunci di jobrapido erp",'/tmp/jobrapidoerp.xml','/tmp/jobrapidoerp.pickle',50)
SavedRSS.Write()



